/**
 * 高精度:减法  整数/小数>=0
 * @param a string 被减数 正数>=0
 * @param b string 减数   正数>=0
 * @return string
 */
$.bcSubDot = function(a, b){
	const R0=n=>'0'.repeat(n), R=/0+$/, SPT=v=>{
		const [i, d] = (v+'').split('.');
		return [i, d?d.replace(R,''):''];
	};
	$.bcSubDot = function(a, b){
		let [ai,ad]=SPT(a), [bi,bd]=SPT(b), v, _;
		if(!ad && !bd) return $.bcSubInt(ai, bi);
		const A=ad.length, B=bd.length, m=A>B?A:B;
		if(A!==B) A>B?(bd+=R0(A-B)):(ad+=R0(B-A));
		v=$.bcSubInt(ai+ad,bi+bd);  _=v[0]==='-';
		if(_) v=v.slice(1);  const n=v.length;
		_=_?'-':'';  if(n<m+1) v=R0(m+1-n)+v;
		const d = v.slice(-m).replace(R,'');
		return _+v.slice(0,-m)+(d?'.'+d:'');
	};
	return $.bcSubDot(a, b);
};
